$(function() {
  class Login {
    constructor() {
      this.init();
    }
    init() {
      this.initDom();
      //先从cookie中读取
      this.putCookieUserInfo();
      this.ifCheckRemember();
      //后从session中读取，如果是从注册页来的，则覆盖cookie中保存的
      this.putUserInfo();
      this.bindEvent();
    }
    initDom() {
      //获取用户名框
      this.username = $('#username');
      //获取密码框
      this.password = $('#password');
      //获取记住密码框
      this.remember_me = $('#remember-me');
      //获取登录按钮
      this.login_btn = $('#login_btn');
    }
    bindEvent() {
      this.login_btn.on('click', () => {
        this.sendLogin();
      });
    }
    //发送登陆请求
    sendLogin() {
      axios({
        method: 'POST',
        url: 'http://127.0.0.1:8888/users/login',
        data: formData({
          username: this.username.val(),
          password: this.password.val()
        })
      }).then(res => {
        if(res.data.code === 1) {
          sessionStorage.removeItem('userInfo');
          cookie('id', res.data.user.id, {
            expires: 1    //存储用户id一个点
          });
          cookie('token', res.data.token, {
            expires: 1    //与服务端同步，一个小时过期，删除token
          });
          localStorage.setItem('usermsg', JSON.stringify({
            gender: res.data.user.gender,
            nickname: res.data.user.nickname,
            age: res.data.user.age
          }));
          //如果登录成功并且勾选了记住用户名密码，则保存到cookie中
          this.rememberInfo();
          new Toast({
            message: res.data.message,
            color: '#67C23A',
            callback() {
              location.href = './index.html';
            }
          });
        }else {
          new Toast({
            message: res.data.message,
            color: '#F56C6C'
          });
        }
      })
    }
    //从cookie中读取用户名和密码，是否是保存过的
    putCookieUserInfo() {
      if(cookie('userInfo')) {
        let userInfo = JSON.parse(cookie('userInfo'));
        this.username.val(userInfo.username);
        this.password.val(userInfo.password);
      }
    }
    //优先从本地存储中获取用户名和密码，是否是从注册页来的
    putUserInfo() {
      if(sessionStorage.getItem('userInfo')) {
        this.username.val(JSON.parse(sessionStorage.getItem('userInfo')).username);
        this.password.val(JSON.parse(sessionStorage.getItem('userInfo')).password);
      }
    }
    //记住用户名密码两天
    rememberInfo() {
      //如果选中保存cookie
      if(this.remember_me.prop('checked')) {
        let obj = {
          username: this.username.val(),
          password: this.password.val()
        }
        cookie('userInfo', JSON.stringify(obj), {
          expires: 48   //记住用户名密码两天
        });
      }else {
        //如果没选中，则删除cookie
        if(cookie('userInfo')) {
          cookie('userInfo', null);
        }
      }
    }
    //判断cookie中是否有用户信息，如果有则把记住我勾选
    ifCheckRemember() {
      if(cookie('userInfo')) {
        this.remember_me.prop('checked', true);
      }else {
        this.remember_me.prop('checked', false);
      }
    }
  }
  new Login();
})